{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#本章需导入的模块\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif']=['SimHei']  #解决中文显示乱码问题\n",
    "plt.rcParams['axes.unicode_minus']=False\n",
    "import warnings\n",
    "warnings.filterwarnings(action = 'ignore')\n",
    "from scipy.stats import beta\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "import sklearn.linear_model as LM\n",
    "from sklearn.model_selection import cross_val_score,cross_validate,train_test_split\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import roc_curve, auc,accuracy_score,precision_recall_curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(123)\n",
    "N=50\n",
    "n=int(0.5*N)\n",
    "X=np.random.normal(0,1,size=100).reshape(N,2)\n",
    "Y=[0]*n+[1]*n\n",
    "X[0:n]=X[0:n]+1.5\n",
    "\n",
    "fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(15,6))\n",
    "axes[0].scatter(X[:n,0],X[:n,1],color='black',marker='o')\n",
    "axes[0].scatter(X[(n+1):N,0],X[(n+1):N,1],edgecolors='magenta',marker='o',c='')\n",
    "axes[0].set_title(\"样本观测点的分布情况\")\n",
    "axes[0].set_xlabel(\"X1\")\n",
    "axes[0].set_ylabel(\"X2\")\n",
    "\n",
    "modelNB = GaussianNB()\n",
    "modelNB.fit(X, Y)\n",
    "modelLR=LM.LogisticRegression()\n",
    "modelLR.fit(X,Y)\n",
    "Data=np.hstack((X,np.array(Y).reshape(N,1)))\n",
    "Yhat=modelNB.predict(X)\n",
    "Data=np.hstack((Data,Yhat.reshape(N,1)))\n",
    "Data=pd.DataFrame(Data)\n",
    "\n",
    "X1,X2 = np.meshgrid(np.linspace(X[:,0].min(),X[:,0].max(),100), np.linspace(X[:,1].min(),X[:,1].max(),100))\n",
    "New=np.hstack((X1.reshape(10000,1),X2.reshape(10000,1)))\n",
    "YnewHat1=modelNB.predict(New)\n",
    "DataNew=np.hstack((New,YnewHat1.reshape(10000,1)))\n",
    "YnewHat2=modelLR.predict(New)\n",
    "DataNew=np.hstack((DataNew,YnewHat2.reshape(10000,1)))\n",
    "DataNew=pd.DataFrame(DataNew)\n",
    "\n",
    "for k,c in [(0,'silver'),(1,'red')]:\n",
    "    axes[1].scatter(DataNew.loc[DataNew[2]==k,0],DataNew.loc[DataNew[2]==k,1],color=c,marker='o',s=1)\n",
    "for k,c in [(0,'silver'),(1,'mistyrose')]:\n",
    "    axes[1].scatter(DataNew.loc[DataNew[3]==k,0],DataNew.loc[DataNew[3]==k,1],color=c,marker='o',s=1)\n",
    "\n",
    "axes[1].scatter(X[:n,0],X[:n,1],color='black',marker='+')\n",
    "axes[1].scatter(X[(n+1):N,0],X[(n+1):N,1],color='magenta',marker='+')\n",
    "for k,c in [(0,'black'),(1,'magenta')]:\n",
    "    axes[1].scatter(Data.loc[(Data[2]==k) & (Data[3]==k),0],Data.loc[(Data[2]==k) & (Data[3]==k),1],color=c,marker='o')\n",
    "axes[1].set_title(\"朴素贝叶斯分类器(误差%.2f)和Logistic回归模型(误差%.2f)的分类边界\"%(1-modelNB.score(X,Y),1-modelLR.score(X,Y)))\n",
    "axes[1].set_xlabel(\"X1\")\n",
    "axes[1].set_ylabel(\"X2\")\n",
    "\n",
    "np.random.seed(123)\n",
    "k=10\n",
    "CVscore=cross_validate(modelNB,X,Y,cv=k,scoring='accuracy',return_train_score=True) \n",
    "axes[1].text(-2,3.5,'贝叶斯测试误差：%.4f' %(1-CVscore['test_score'].mean()),fontsize=12,color='r')\n",
    "CVscore=cross_validate(modelLR,X,Y,cv=k,scoring='accuracy',return_train_score=True) \n",
    "axes[1].text(-2,3,\"Logistic回归测试误差：%.2f\" %(1-CVscore['test_score'].mean()),fontsize=12,color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "说明： 1、这里通过模拟研究，通过朴素贝叶斯分类器和Logistic回归模型的对比，加深对朴素贝叶斯分类器基本原理和决策边界的理解。 2、数据模拟方案为：随机生成两组各50个服从标准正态分布的随机数，分别作为输入变量X1和X2。然后，指定相应样本观测点（X1,X2）对应的输出变量Y取值为0或1，0和1的各占50%。最后，调整输出变量Y等于0的样本观测点在2为空间中的位置。 3、引用sklearn.naive_bayes中的GaussianNB包采用高斯朴素贝叶斯分类器，对模拟数据进行分类预测建模。同时也采用Logistic回归模型进行分类预测。两个模型（分类器）的训练误差相等。 4、为绘制贝叶斯分类器和Logistic回归模型的分类边界，利用Numpy的meshgrid函数分布生成X1和X2取值范围内均匀分布的10000个样本观测点。利用前面所建立的贝叶斯分类器和Logistic回归模型给出10000个样本观测点输出变量的取值。 5、贝叶斯分类器和Logistic回归模型的分类边界的可视化中，采用不同颜色区分两个模型的分类边界。 6、Python代码的for循环中可以指定两个循环控制变量，如这里的k和c。循环中控制变量的取值决于in的指定，如第一次循环k和c分别取0和silver，第二次循环k和c分别取1和red。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "朴素贝叶斯分类器10折交叉验证：训练错误率:0.2134 测试错误率：0.2333\n",
      "Logistic回归10折交叉验证：训练错误率:0.2269 测试错误率：0.2500\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(123)\n",
    "k=10\n",
    "CVscore=cross_validate(modelNB,X,Y,cv=k,scoring='accuracy',return_train_score=True) \n",
    "print('朴素贝叶斯分类器10折交叉验证：训练错误率:%.4f 测试错误率：%.4f' %(1-CVscore['train_score'].mean(),1-CVscore['test_score'].mean()))\n",
    "CVscore=cross_validate(modelLR,X,Y,cv=k,scoring='accuracy',return_train_score=True) \n",
    "print(\"Logistic回归10折交叉验证：训练错误率:%.4f 测试错误率：%.4f\" %(1-CVscore['train_score'].mean(),1-CVscore['test_score'].mean()))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "说明：\n",
    "1、这里，基于上述模拟数据，比较朴素贝叶斯分类器和Logistic回归模型的训练误差和测试误差。\n",
    "2、采用10折交叉验证法，分别计算两个模型的训练误差和测试误差。这里，scoring='accuracy'表示输出模型精度的测度指标，即正确分类的比率。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
